
#ifndef MODULE_H
#define MODULE_H
#include "tensor.h"

class Module {
    public:
        Module();
        int device;
        int require_bias;
        int require_grad;
        Tensor *weight;
        Tensor *input;
        Tensor *bias;
        Tensor *bias_grad; // 偏置的梯度
        Tensor *weight_grad; // 权重的梯度
        Tensor *grad_at; // 向上一层传递的梯度
        virtual Tensor *forward(Tensor *x) {
            return (Tensor *)NULL;
        };
        virtual void backward(Tensor *grad){};
        virtual void update(float lr){};
        virtual void mFree(){};
};


#endif // MODULE_H